]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
GdmUtil: don't call GetUserVerifier from the user session
authorGiovanni Campagna <gcampagna@src.gnome.org>
Fri, 3 Aug 2012 15:10:45 +0000 (17:10 +0200)
committerGiovanni Campagna <gcampagna@src.gnome.org>
Fri, 3 Aug 2012 16:06:10 +0000 (18:06 +0200)
GetUserVerifier can only be called from the greeter session,
and fails with AccessDenied in all other cases. Also, calling it
hides the real error from OpenReauthenticationChannel, which
instead should be logged.

https://bugzilla.gnome.org/show_bug.cgi?id=680750

js/gdm/util.js
js/ui/unlockDialog.js

index b441b500a0991dfbfd8649d0a0c49052fe3d16b2..fb68ab09946a7c6095bde572c73d88e1e207c672 100644 (file)
@@ -7,6 +7,7 @@ const Signals = imports.signals;
 const Batch = imports.gdm.batch;
 const Fprint = imports.gdm.fingerprint;
 const Main = imports.ui.main;
+const Params = imports.misc.params;
 const Tweener = imports.ui.tweener;
 
 const PASSWORD_SERVICE_NAME = 'gdm-password';
@@ -69,7 +70,10 @@ function fadeOutActor(actor) {
 const ShellUserVerifier = new Lang.Class({
     Name: 'ShellUserVerifier',
 
-    _init: function(client) {
+    _init: function(client, params) {
+        params = Params.parse(params, { reauthenticationOnly: false });
+        this._reauthOnly = params.reauthenticationOnly;
+
         this._client = client;
 
         this._settings = new Gio.Settings({ schema: LOGIN_SCREEN_SCHEMA });
@@ -135,6 +139,15 @@ const ShellUserVerifier = new Lang.Class({
 
             this._hold.release();
         } catch (e) {
+            if (this._reauthOnly) {
+                logError(e, 'Failed to open reauthentication channel');
+
+                this._hold.release();
+                this.emit('verification-failed');
+
+                return;
+            }
+
             // If there's no session running, or it otherwise fails, then fall back
             // to performing verification from this login session
             client.get_user_verifier(this._cancellable, Lang.bind(this, this._userVerifierGot));
index 8dba006749bff55273b8cca0745220a1d4f35433..af07a726c5ed0ae969a7d05fe436f4804f21f7d9 100644 (file)
@@ -87,7 +87,7 @@ const UnlockDialog = new Lang.Class({
         this._user = this._userManager.get_user(this._userName);
 
         this._greeterClient = new Gdm.Client();
-        this._userVerifier = new GdmUtil.ShellUserVerifier(this._greeterClient);
+        this._userVerifier = new GdmUtil.ShellUserVerifier(this._greeterClient, { reauthenticationOnly: true });
 
         this._userVerifier.connect('reset', Lang.bind(this, this._reset));
         this._userVerifier.connect('ask-question', Lang.bind(this, this._onAskQuestion));